package com.max.rabbitmq.learn.simple;

import com.max.rabbitmq.learn.util.ConnectionUtil;
import com.rabbitmq.client.*;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeoutException;

/**
 * @description 简单模式发送者
 * @author yandong
 * @create 2021年4月06日 10:46:09
 */
public class Send {
    public static void main(String[] args) throws IOException, TimeoutException {
        //获取连接
        Connection connection = ConnectionUtil.getConnection();
        //获取chanel chanel是操作rabbitmq broker的接口，即操作amqp协议的对象
        Channel channel = connection.createChannel();

        //直连的话可以不声明交换机，直接绑定队列
        //参数说明:
        /**
         * 0.队列名称
         * 1.是否持久化
         * 2.是否独占队列
         * 3.是否自动删除
         * 4.队列的额外属性
         * */
        channel.queueDeclare("max-host-simple-mode", true, false, false, null);
        //发送信息
        String message = "hello world";
        /**
         * 0.交换机名称
         * 1.路由key(如果是直连则为队列的名称)
         * 2.message的额外属性
         * 3.message的消息体
         * */
        channel.basicPublish("", "max-host-simple-mode", new AMQP.BasicProperties.Builder().messageId(UUID.randomUUID().toString()).build(), message.getBytes(StandardCharsets.UTF_8));
        channel.close();
        connection.close();
    }
}
